package org.grc.app.z_project.z_framework.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 流操作工具类
 * 
 * @author grc
 * @since 1.0-SNAPSHOT
 */
public class StreamUtil {

	private static final Logger LOGGER = LoggerFactory.getLogger(StreamUtil.class);
	
	/**
	 * 将输入流复制到输出流
	 */
	public static void copyStream (InputStream inputStream, OutputStream outputStream) {
		try {
			int length;
			byte[] buffer = new byte[4*1024];
			while ((length = inputStream.read(buffer, 0, buffer.length)) != -1) {
				outputStream.write(buffer, 0, length);
			}
		} catch (Exception e) {
			LOGGER.error("copy stream failure", e);
			throw new RuntimeException(e);
		} finally {
			try {
				inputStream.close();
				outputStream.close();
			} catch (IOException e) {
				LOGGER.error("close stream failure");
			}
		}
	}
	
	/**
	 * 从输入流中获取字符串
	 */
	public static String getString (InputStream is) {
		StringBuilder sb = new StringBuilder();
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(is));
			String line = null;
			while ((line = reader.readLine()) != null) {
				sb.append(line);
			}
		} catch (Exception e) {
			LOGGER.error("get string failure", e);
			throw new RuntimeException(e);
		}
		return sb.toString();
	}
}
